// pages/record/sleep.js
const { post } = require('../../utils/request');
const { formatDate } = require('../../utils/util');

Page({

    /**
     * 页面的初始数据
     */
    data: {
        date: formatDate(new Date()),
        startTime: '22:00',
        endTime: '07:00',
        duration: 9,
        quality: '良好',
        notes: '',
        isFormValid: true
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        // 设置默认日期为今天
        const today = formatDate(new Date());
        this.setData({
            date: today
        });
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },

    // 日期变化
    onDateChange(e) {
        this.setData({
            date: e.detail.value
        });
    },

    // 入睡时间变化
    onStartTimeChange(e) {
        this.setData({
            startTime: e.detail.value
        });
        this.calculateDuration();
    },

    // 起床时间变化
    onEndTimeChange(e) {
        this.setData({
            endTime: e.detail.value
        });
        this.calculateDuration();
    },

    // 计算睡眠时长
    calculateDuration() {
        const { startTime, endTime } = this.data;
        
        // 将时间转换为分钟
        const startMinutes = this.timeToMinutes(startTime);
        const endMinutes = this.timeToMinutes(endTime);
        
        // 计算时长（考虑跨天的情况）
        let duration = endMinutes - startMinutes;
        if (duration < 0) {
            duration += 24 * 60; // 加上一天的分钟数
        }
        
        this.setData({
            duration: (duration / 60).toFixed(1)
        });
    },

    // 将时间转换为分钟
    timeToMinutes(time) {
        const [hours, minutes] = time.split(':').map(Number);
        return hours * 60 + minutes;
    },

    // 睡眠质量选择
    onQualitySelect(e) {
        const quality = e.currentTarget.dataset.quality;
        this.setData({ quality });
    },

    // 备注输入
    onNotesInput(e) {
        this.setData({
            notes: e.detail.value
        });
    },

    // 提交记录
    async handleSubmit() {
        const { date, startTime, endTime, duration, quality, notes } = this.data;

        try {
            wx.showLoading({
                title: '保存中...',
            });

            const durationMinutes = Math.round(parseFloat(duration) * 60);
            
            const res = await post('/records/sleep', {
                date,
                startTime,
                endTime,
                duration: durationMinutes,
                quality,
                notes: notes || ''
            });

            wx.hideLoading();
            wx.showToast({
                title: '记录成功',
                icon: 'success'
            });

            // 返回上一页
            setTimeout(() => {
                wx.navigateBack();
            }, 1500);

        } catch (error) {
            console.error('提交睡眠记录失败:', error);
            wx.hideLoading();
            wx.showToast({
                title: error.message || '记录失败',
                icon: 'none'
            });
        }
    },

    viewHistory() {
        wx.navigateTo({
            url: '/pages/record/sleep-list'
        });
    }
})